home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 5
/
Merciful - Disc 5.iso
/
software
/
p
/
pcqpascalv1.2d.lha
/
Examples2
/
SaveKick2File
/
SaveKick2File.p
< prev
Wrap
Text File
|
1997-05-06
|
3KB
|
101 lines
{
-----------------------------------------------------------------------
- -
- SaveKick2File - Version 1.1, (C)1992 by Bernd Künnen -
- Neuringe 75 -
- This programm is Freeware, 44777 Twist -
- coded in 03.1991 in PCQ-Pascal(1.2b). -
- -
- Usage : SaveKick2file filename -
- -
-----------------------------------------------------------------------
}
Program SaveKick;
{$I "include:libraries/dos.i" }
{$I "include:Utils/parameters.i" }
{$I "include:exec/exec.i" }
{$I "include:exec/execbase.i" }
{$I "include:Utils/stringlib.i" }
CONST
Kick256 : Integer = 256*1024; { 512 bzw. 256 K }
Kick512 : Integer = 512*1024;
exec : Integer = $0004; { in $4 ist Ptr auf Execbase }
TYPE
adrptr = ^Address; { um nachher an den execbaseptr zu kommen }
VAR
KickMem : Address;
KickSize : Integer;
MyHandle : FileHandle;
myfile : String;
myexecbaseptr : execbaseptr;
{
**** Sorgt für ein sauberes Verlassen des Programms, egal wo man ****
**** aussteigt : ****
}
PROCEDURE cleanexit(why : String ; rtcode : Integer);
BEGIN
{
## Ausgabe ins CLI, warum das Program verlassen ##
}
{
## werden mußte, inkl.Returncode f. Batchfiles ##
}
IF MyHandle<>NIL THEN DOSClose(MyHandle);
IF why<>NIL THEN writeln(why);
exit(rtcode);
END;
{
************** Hier nun endlich die Hauptschleife **************
}
BEGIN
writeln("
SaveKick2File V1.1, (C)1992 B.Künnen\n
");
myfile:=AllocString(80); {
Buffer für 79 chars holen
}
GetParam(1,myfile); {
CLI-Argument in Buffer kopieren
}
IF strlen(myfile)=0 THEN {
Wenn kein CLI-Arg., dann nachfragen
}
BEGIN
write("Save actual Kickstart 2 file named : ");
readln(myfile);
IF strlen(myfile)=0 THEN cleanexit("No filename !",10);
END;
myexecbaseptr:=Address(adrptr(exec)^); {
ExecbasePtr holen
}
IF myexecbaseptr^.LibNode.lib_Version<37 then {
Version vergleichen
}
begin
writeln("Saving 256K - Kickstart...");
KickMem:=Address($fc0000); {
version<37 Then Kick1.3 or lower
}
Kicksize:=Kick256;
end else begin
writeln("Saving 512K - Kickstart..."); {
>=37 -> 2.0 or higher Kickstart
}
KickMem:=Address($f80000);
Kicksize:=Kick512;
end;
{
Open file and test if ok ...
}
MyHandle:=DOSOpen(myfile,MODE_NEWFILE);
IF MyHandle=NIL THEN cleanexit("Can`t open output-file.",5);
{
Write Kickstart 2 File
}
IF DOSWrite(MyHandle,KickMem,KickSize)<>KickSize
THEN cleanexit("Error writing Kickstart.",5);
Delay(50); {
eine taktvolle Sekunden ......
}
cleanexit(NIL,0); {
bye bye baby ....
}
END.